package com.ct.commons.handler;


import com.ct.utils.result.IResultCode;
import lombok.Data;

/**
 * @author 飞哥
 * @Title: 学相伴出品
 * @Description: 我们有一个学习网站：https://www.kuangstudy.com
 * @date 2021/6/2 10:32
 */
@Data
public class ErrorHandler {
    // ErrorHandler === R 答案：不想破坏R类。
    // 异常的状态码，从枚举中获得
    private Integer code;
    // 异常的消息，写用户看得懂的异常，从枚举中得到
    private Object msg;
    // 状态名字
    private String name;
    // 属性名字
    private String field;
    // 异常的名字
    private String exception;


    public static ErrorHandler fail(Integer code,Object msg,String  field,String name, Throwable throwable) {
        ErrorHandler errorHandler = new ErrorHandler();
        errorHandler.setMsg(msg);
        errorHandler.setCode(code);
        errorHandler.setName(name);
        errorHandler.setField(field);
        errorHandler.setException(throwable.getMessage());
        return errorHandler;
    }

    public static ErrorHandler fail(Integer code,Object msg,String name, Throwable throwable) {
        ErrorHandler errorHandler = new ErrorHandler();
        errorHandler.setMsg(msg);
        errorHandler.setCode(code);
        errorHandler.setName(name);
        errorHandler.setException(throwable.getMessage());
        return errorHandler;
    }

    public static ErrorHandler fail(IResultCode resultCode, Throwable throwable) {
        ErrorHandler errorHandler = new ErrorHandler();
        errorHandler.setMsg(resultCode.getMsg());
        errorHandler.setName(resultCode.getCodeDesc());
        errorHandler.setCode(resultCode.getCode());
        errorHandler.setException(throwable.getMessage());
        return errorHandler;
    }

}